<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // ES 中使用 class 创建类，constructor为类的构造方法，类中的所有方法不需要额外的加function
    // constructor在new关键字后执行，如果不写有一个默认的
    // 语法规范，Star类后不用加()
    class Star {
        constructor(uname, age) {
            this.uname = uname;
            this.age = age;
        }
        sing(song) {
            // console.log('我唱歌');
            console.log(this.uname + song);
        }
    }

    var ldh = new Star("刘德华", 20);
    var zxy = new Star("张学友", 22);

    console.log(ldh.uname); // 刘德华
    console.log(zxy.age); // 22

    //(1) 通过class 关键字创建类, 类名我们还是习惯性定义首字母大写
    //(2) 类里面有个constructor 函数,可以接受传递过来的参数,同时返回实例对象
    //(3) constructor 函数 只要 new 生成实例时,就会自动调用这个函数, 如果我们不写这个函数,类也会自动生成这个函数
    //(4) 生成实例 new 不能省略
    //(5) 最后注意语法规范, 创建类 类名后面不要加小括号,生成实例 类名后面加小括号, 构造函数不需要加function

    // (1) 我们类里面所有的函数不需要写function
    //(2) 多个函数方法之间不需要添加逗号分隔
    ldh.sing('冰雨');
    zxy.sing('李香兰');

</script>
</body>
</html>